package com.john.study.es.config;

/**
 * @author jiangguangtao 2017/7/28.
 */
public enum FieldDataTypeEnum {
    ARRAY("array"),
    /**
     * 二进制类型，一般中Base64编码的
     */
    BINARY("binary "),
    INTEGER_RANGE("integer_range"),
    FLOAT_RANGE("float_range"),
    LONG_RANGE("long_range"),
    DOUBLE_RANGE("double_range"),
    /**
     * "time_frame": {
     * "type": "date_range",
     * "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
     * }
     */
    DATE_RANGE("date_range"),
    IP_RANGE("ip_range"),

    TEXT("text"),
    /**
     * 通常用于标识过滤关键字，如果字段用于全文搜索，请使用text类型
     */
    KEYWORD("keyword"),
    /**
     * 默认可接受的格式
     * <p>"2015-01-01" or "2015/01/01 12:10:30".</p>
     * <p>a long number representing milliseconds-since-the-epoch.</p>
     * <p>an integer representing seconds-since-the-epoch.</p>
     * <p>
     * "date": {
     * "type":   "date",
     * "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
     * }
     */
    DATE("date"),
    /**
     * 建议使用true或者FALSE字符串表示
     */
    BOOLEAN("boolean"),
    /**
     * 接受经纬度值对
     * <p> 字符串类的格式 lat,lon，，数组格式[lon,lat]
     * <p>"location": { "lat": 41.12, "lon": -71.34 }
     * <p>"location": "41.12,-71.34"
     * <p>"location": "drm3btev3e86"  地址Hash
     * <p>"location": [ -71.34, 41.12 ]
     * <p> 地址块
     * "geo_bounding_box": {
     * "location": {
     * "top_left": {
     * "lat": 42,
     * "lon": -72
     * },
     * "bottom_right": {
     * "lat": 40,
     * "lon": -74
     * }
     * }
     */
    GEO_POINT("geo_point"),
    GEO_SHAPE("geo_shape"),
    IP("ip"),
    LONG("long"),
    INTEGER("integer"),
    SHORT("short"),
    BYTE("byte"),
    DOUBLE("double"),
    FLOAT("float"),
    HALF_FLOAT("half_float"),
    /**
     * "properties": {
     * "number_of_bytes": {
     * "type": "integer"
     * },
     * "time_in_seconds": {
     * "type": "float"
     * },
     * "price": {
     * "type": "scaled_float",
     * "scaling_factor": 100
     * }
     * }
     */
    SCALED_FLOAT("scaled_float"),
    /**
     * 实际上是一个整型类型，用于统计文本类型的值的Token数
     * <p>
     * "properties": {
     * "name": {
     * "type": "text",
     * "fields": {
     * "length": {
     * "type":     "token_count",
     * "analyzer": "standard"
     * }
     * }
     * }
     * }
     * </p>
     */
    TOKEN_COUNT("token_count "),

    ;

    private String value;

    FieldDataTypeEnum(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }
}
